#include "mypushbutton.h"
#include <QPixmap>
#include <QDebug>
#include <QIcon>
#include <QPropertyAnimation> //动画类

MyPushButton::MyPushButton(QString normalImgPath, QString pressImgPath)
{
    m_normalImgPath = normalImgPath;
    m_pressImgPath = pressImgPath;

    QPixmap pix;
    bool ret = pix.load(m_normalImgPath);
    if(!ret)
    {
        QString str = QString("图片加载失败： %1").arg(m_normalImgPath);
        qDebug() << str;
    }

    //设置图片大小
    this->setFixedSize(pix.width(), pix.height());

    //设置不规则图片样式
    this->setStyleSheet("QPushButton{border:0px;}");

    //设置图片
    this->setIcon(pix);

    //设置图片大小
    this->setIconSize(QSize(pix.width(), pix.height()));
}


void MyPushButton::zoom1()
{
    //创建动画对象. 参数1：设置动画的对象  参数2：动画的图形，这里是矩形
    QPropertyAnimation* animation = new QPropertyAnimation(this, "geometry");

    //设置时间间隔 ms
    animation->setDuration(200);

    //创建起始位置。 动画的图形是矩形，所以参数为矩形框
    animation->setStartValue(QRect(this->x(), this->y(), this->width(), this->height()));

    //创建结束位置
    animation->setEndValue(QRect(this->x(), this->y() + 10, this->width(), this->height()));

    //设置缓和曲线
    animation->setEasingCurve(QEasingCurve::OutBounce);

    //开始执行动画
    animation->start();
}


void MyPushButton::zoom2()
{
    //创建动画对象. 参数1：设置动画的对象  参数2：动画的图形，这里是矩形
    QPropertyAnimation* animation = new QPropertyAnimation(this, "geometry");

    //设置时间间隔 ms
    animation->setDuration(200);

    //创建起始位置。 动画的图形是矩形，所以参数为矩形框
    animation->setStartValue(QRect(this->x(), this->y() + 10, this->width(), this->height()));

    //创建结束位置
    animation->setEndValue(QRect(this->x(), this->y(), this->width(), this->height()));

    //设置缓和曲线
    animation->setEasingCurve(QEasingCurve::OutBounce);

    //开始执行动画
    animation->start();
}


//鼠标按下事件
void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    if(this->m_pressImgPath != "")//
    {
        QPixmap pix;
        bool ret = pix.load(m_pressImgPath);
        if(!ret)
        {
            QString str = QString("加载图片失败 %1").arg(m_pressImgPath);
            qDebug() << str;
            return ;
        }

        //设置图片大小
        this->setFixedSize(pix.width(), pix.height());

        //设置不规则图片样式
        this->setStyleSheet("QPushButton{border:0px;}");

        //设置图片
        this->setIcon(pix);

        //设置图片大小
        this->setIconSize(QSize(pix.width(), pix.height()));
    }

    //其他事情交给父类处理
    QPushButton::mousePressEvent(e);
}

//鼠标释放事件
void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if(this->m_pressImgPath != "")//
    {
        QPixmap pix;
        bool ret = pix.load(m_normalImgPath);
        if(!ret)
        {
            QString str = QString("加载图片失败 %1").arg(m_normalImgPath);
            qDebug() << str;
            return ;
        }

        //设置图片大小
        this->setFixedSize(pix.width(), pix.height());

        //设置不规则图片样式
        this->setStyleSheet("QPushButton{border:0px;}");

        //设置图片
        this->setIcon(pix);

        //设置图片大小
        this->setIconSize(QSize(pix.width(), pix.height()));
    }

    //其他事情交给父类处理
    QPushButton::mouseReleaseEvent(e);
}

#if 0
//鼠标进入事件
void MyPushButton::enterEvent(QEvent* e)
{
    QPixmap pix;
    bool ret = pix.load(m_normalImgPath);
    if(!ret)
    {
        QString str = QString("加载图片失败 %1").arg(m_normalImgPath);
        qDebug() << str;
        return ;
    }

    pix = pix.scaled(pix.width() * 1.1, pix.width() * 1.1);

    //设置图片大小
    this->setFixedSize(pix.width(), pix.height());

    //设置不规则图片样式
    this->setStyleSheet("QPushButton{border:0px;}");

    //设置图片
    this->setIcon(pix);

    //设置图片大小
    this->setIconSize(QSize(pix.width(), pix.height()));

}


//鼠标离开事件
void MyPushButton::leaveEvent(QEvent* e)
{
    QPixmap pix;
    bool ret = pix.load(m_normalImgPath);
    if(!ret)
    {
        QString str = QString("加载图片失败 %1").arg(m_normalImgPath);
        qDebug() << str;
        return ;
    }

    //设置图片大小
    this->setFixedSize(pix.width(), pix.height());

    //设置不规则图片样式
    this->setStyleSheet("QPushButton{border:0px;}");

    //设置图片
    this->setIcon(pix);

    //设置图片大小
    this->setIconSize(QSize(pix.width(), pix.height()));

}
#endif
